#ifndef _QUEUE_LIST_H
#define _QUEUE_LIST_H
struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode Position;
struct QueueRecord;
typedef struct QueueRecord *Queue;
typedef int ElementType;

int IsEmpty(Queue Q);
int IsFull(Queue Q);
Queue CreateQueue();
void DisposeQueue(Queue Q);
void MakeEmpty(Queue Q);
void Enqueue(ElementType X, Queue Q);
ElementType Front(Queue Q);
void Dequeue(Queue Q);
ElementType FrontAndDequeue(Queue Q);

struct Node
{
    ElementType Element;
    Position Next;
};
struct QueueRecord
{
    Position front;
    Position rear;
};
#endif // !_QUEUE_LIST_H